home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1411.dms / var1411.adf / include / Startup.i
Text File  |  1993-07-28  |  1KB  |  60 lines

  1. *
  2. * Standard opening routine, which allows for starting from CLI or workbench
  3. * modified example taken from the ROM Kernal Reference Manual
  4. * - Libraries & Devices
  5. *
  6. * include this at the very start of your program, after your list of includes
  7. *
  8. * requires 'exec/exec_lib.i'
  9.  
  10.     IFND    EXEC_EXEC_I
  11.     include    exec/exec.i
  12.     ENDC
  13.     IFND    DOS_DOSEXTENS_I
  14.     include    dos/dosextens.i
  15.     ENDC
  16.  
  17.  
  18.     movem.l    d0/a0,-(sp)        Save CLI command
  19.     clr.l    .WbMsg
  20.  
  21.     sub.l    a1,a1            Get out task
  22.     move.l    $4.w,a6
  23.     jsr    _LVOFindTask(a6)
  24.     move.l    d0,a5
  25.  
  26.     tst.l    pr_CLI(a5)        Is it from CLI ?
  27.     bne.s    .Join
  28.  
  29. .Wkbnch    lea    pr_MsgPort(a5),a0    Wait for workbench message
  30.     jsr    _LVOWaitPort(a6)
  31.  
  32.     lea    pr_MsgPort(a5),a0    Get that message
  33.     jsr    _LVOGetMsg(a6)
  34.     move.l    d0,.WbMsg        save it for later
  35.  
  36.  
  37. .Join    movem.l    (sp)+,d0/a0        retore CLI registers
  38.  
  39.     bsr.s    .Main            call our program
  40.  
  41.     move.l    .WbMsg(pc),d1        Check for workbench start
  42.     beq.s    .CLI
  43.  
  44.     move.l    d0,-(sp)        save exit code
  45.  
  46.     move.l    $4.w,a6
  47.     jsr    _LVOForbid(a6)        Stop exec task switching
  48.  
  49.     move.l    .WbMsg(pc),a1        reply to workbench message
  50.     jsr    _LVOReplyMsg(a6)    - Workbench kills off our task
  51.  
  52.     move.l    (sp)+,d0        restore exit code
  53. .CLI    rts
  54.  
  55. .WbMsg    dc.l    0            Message provided by Workbench startup
  56.  
  57. * Your program starts here
  58. .Main    
  59.  
  60.